ASP.NET 网页 (Razor) 故障排除指南

您所在的位置:网站首页 iis 运行cshtml ASP.NET 网页 (Razor) 故障排除指南

ASP.NET 网页 (Razor) 故障排除指南

2024-01-27 23:15| 来源: 网络整理| 查看: 265

ASP.NET 网页 (Razor) 疑难解答指南 项目 07/13/2023

作者 Tom FitzMacken

本文介绍在使用 ASP.NET 网页 (Razor) 和一些建议的解决方案时可能遇到的问题。

软件版本 ASP.NET 网页 (Razor) 3

本教程还适用于 ASP.NET 网页 2 和 ASP.NET 网页 1.0。

本主题包含以下各节:

运行页面的问题 Razor Code 的问题 安全性和成员身份问题 发送Email时出现问题 其他资源

有关一般问题,请参阅 ASP.NET 网页 (Razor) 常见问题解答。

运行页面的问题

各种问题可能会阻止 .cshtml 和 .vbhtml 页面正常运行。 本部分列出了常见的错误消息和可能的原因。

HTTP 错误 403 - 禁止访问:拒绝访问

你无权使用提供的凭据查看此目录或页面。

如果服务器未运行正确版本的.NET Framework,则会发生此错误。 确保运行服务器的计算机 (本地或远程) 至少安装了 .NET Framework 4。 此外,请确保应用程序本身配置为运行正确的版本。

如果在 WebMatrix 中工作时在本地看到此问题,请单击“网站”工作区,然后在树视图中单击“设置”。 在“选择.NET Framework版本”列表中,选择“.NET 4 (集成) ”。 如果已设置此版本,请尝试以管理员身份运行 WebMatrix。

请确保网站的根目录中至少有一个 .cshtml 文件。

如果在 Web 服务器位于远程服务器上时看到此错误,请与服务器管理员联系。 确保服务器已安装 .NET Framework 4 或更高版本。 此外,请确保应用程序在配置为使用该版本的 the.NET Framework 的应用程序池中运行。

如果能够控制服务器,请确保它运行的是正确版本的.NET Framework。 还可以尝试通过运行 aspnet_regiis -iru 命令来修复安装。 (例如,如果在安装.NET Framework后安装 IIS,IIS 将无法正确配置为运行 ASP.NET 页。) 有关详细信息,请参阅 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 。

HTTP 错误 403.14 - 禁止访问

Web 服务器配置为不列出此目录的内容。

如果请求 (受保护的资源(如 Web.config 文件) )或位于受保护 ((如 App_Data 或 App_Code) )的文件夹中,则会发生此错误。

HTTP 错误 404.17 - 未找到

请求的内容显示为脚本,不会由静态文件处理程序提供服务。

如果服务器未正确配置为使用 .NET Framework 4 或更高版本,因此无法识别块中的@{ }代码,则会发生此错误。 请参阅前面有关 HTTP 错误 403 - 禁止访问的说明: 拒绝访问。

HTTP 错误 404.7 - 找不到

请求筛选模块配置为拒绝文件扩展名

如果在服务器上显式阻止 .cshtml 或 .vbhtml 扩展,则会发生此错误。 此问题的一个症状是 URL 在不包含扩展时正常工作,但包含 .cshtml 或 .vbhtml 的 URL 不起作用。 一种可能的解决方案是在站点的 Web.config 文件中重新启用扩展。 以下示例演示如何启用 .cshtml 扩展。

HTTP 错误 404.8 - 找不到

请求筛选模块配置为拒绝 URL 中包含 hiddenSegment 节的路径。

如果请求 (受保护的资源(如 Web.config 文件) )或位于受保护 ((如 App_Data 或 App_Code) )的文件夹中,则会发生此错误。

(“/”应用程序) 中的服务器错误,不会提供这种类型的页面

请参阅前面有关 HTTP 错误 404.17 的说明。

Razor 代码的问题 名称“class”在当前上下文中不存在

通常,出现此错误 class 的一个原因是引用了帮助程序,但未安装帮助程序。 例如,如果尝试使用帮助程序,但如果尚未从 NuGet 安装包,则会看到此错误。 使用 WebMatrix 中的库查找并安装帮助程序。

如果已安装帮助程序,但页面仍无法识别它,请尝试向代码添加 语句 using 。 在 语句中 using ,引用包含帮助程序的命名空间。 例如,ASP.NET Web 帮助程序包中的基本帮助程序位于 命名空间中 System.Web.Helpers 。 在想要使用帮助程序的页面顶部,添加以下行:

@using Microsoft.Web.Helpers;

安全性和成员身份问题

如果在 ASP.NET 网页 (Razor) 中使用内置安全 (成员身份) 系统,则可能会遇到以下问题。

若要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例

此错误可能指示未配置任何 AspNetSqlMembershipProvider 类。 (一种症状是,站点在本地运行正常,但在将站点发布到托管提供商的服务器时会引发此错误。) 此问题的一个解决方法是通过将以下内容添加到站点 Web.config 文件来显式启用简单的成员身份:

发送Email时出现问题

发送电子邮件的问题可能难以调试。 初始问题可能是无法连接到 SMTP 服务器。 如果连接成功,ASP.NET 将邮件交给 SMTP 服务器。 但是,邮件本身可能存在问题,导致 SMTP 服务器无法发送它。

如果应用程序未成功发送电子邮件,请尝试以下操作:

SMTP 服务器名称通常类似于 smtp.provider.com 或 smtp.provider.net。 但是,如果将站点发布到托管提供程序,则此时的 SMTP 服务器名称可能是 localhost。 出现这种情况的原因是,在发布站点并在提供程序的服务器上运行后,从应用程序的角度来看,SMTP 服务器可能是本地服务器。 服务器名称的此更改可能意味着必须在发布过程中更改 SMTP 服务器名称。 端口号通常为 25。 但是,某些提供程序要求使用端口 587 或其他某些端口。 请与 SMTP 服务器的所有者核实他们期望你使用的端口号。 请确保使用正确的凭据。 如果已将网站发布到托管提供商,请使用提供商专门指示的电子邮件凭据。 这些凭据可能与用于发布的凭据不同。 有时根本不需要凭据。 如果你使用个人 ISP 发送电子邮件,则电子邮件提供商可能已经知道你的凭据。 发布后,可能需要使用与在本地计算机上测试时不同的凭据。 如果电子邮件提供商使用加密,请将 设置为 WebMail.EnableSsltrue。

如果发送电子邮件时出错,你可能会看到标准 ASP.NET 错误消息,如下所示:

还可以使用 try-catch 块来调试发送电子邮件时出现的问题,如以下示例所示。 使用 try-catch 块时,ASP.NET 不显示其标准错误消息。 相反,可以在块的 部分中 catch 捕获错误。

var errorMessage = ""; try { // Initialize WebMail helper WebMail.SmtpServer = "your-SMTP-server-name"; WebMail.SmtpPort = 25; // Or the port you've been told to use WebMail.EnableSsl = false; WebMail.UserName = "your-login-name"; WebMail.Password = "your-password"; WebMail.From = "your-from-address"; WebMail.Send(to: test-To-address, subject: "Test email message", body: "This is a debug email message" ); } catch (Exception ex ) { errorMessage = ex.Message; } // Other code or markup here ... @if(!errorMessage.IsEmpty()){

@errorMessage

}

替换 的相应值,以 your-SMTP-server-name类为 。 你可能会以这种方式看到的一些错误消息包括:

发送邮件失败。

\- 或 -

连接尝试失败,因为连接的一段时间后未正确响应,或者建立的连接失败,因为连接的主机无法响应

此错误通常意味着应用程序无法连接到 SMTP 服务器。 检查服务器名称和端口号。

邮箱不可用。 服务器响应为:5.1.0 发件人被拒绝:无效的发件人域

此消息可能指示 From 地址不正确或缺失。

指定的字符串不是电子邮件地址所需的格式。

此错误可能指示 或 From 属性的值To未识别为电子邮件地址。 (ASP.NET 无法检查电子邮件地址有效,只能使用正确的格式,如 [email protected].)

注意

在将页面发布到实时网站之前,删除显示错误 (@errorMessage) 的标记。 让用户看到从服务器获取的错误消息不是一个好主意。

其他资源

ASP.NET 网页 (Razor) 常见问题解答

ASP.NET 网站上的 WebMatrix 和 ASP.NET 网页 论坛



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3